<?php


namespace app\api\model;
use think\Exception;
use think\Model;
use think\Db;

class Base extends Model
{
    /**
     *获得项目内容
     * @param string $table 表名
     * @param string $field 字段名
     * @param string $where 条件
     * @param int $page 一页显示条数
     * @param int $page_size 第xxx页
     * @param $order string 第xxx页
     * @return
     */
    //前端处理分页
    public static function allSelect($table,$field = '',$where = '',$page = 1,$page_size = 10,$order = ''){
        try{
            return  Db::name($table)->field($field)->field(['id'=>'key'])->where($where)->where('status',1)
                ->order($order)->page($page,$page_size)->select();
        }catch(Exception $e){
            return $e;
        }
    }
//    public static function allSelect($table,$field = '',$where = '',$order = ''){
//        try{
//            return  Db::name($table)->field($field)->field(['id'=>'key'])->where($where)->where('status',1)
//                ->order($order)->select();
//        }catch(Exception $e){
//            return $e;
//        }
//    }

    /**
     *获得项目详细内容
     * @param string $table,
     * @param string $field
     * @param int $id
     */
    public static function selectId($table,$field = '',$id){
        $data = Db::name($table)->field($field)->where(['id'=>$id])->find();
        return $data;
    }

    /**
     *得到项目条数
     * @param string $table,
     * @param string $where
     */
    public static function total($table,$where = ''){
        $data = Db::name($table)->where($where)->where('status',1)->count();
        return $data;
    }

    /**
     *添加项目
     * @param string $table 表名
     * @param array $data 插入的数据集合
     * @return int $id 传回的插入行id
     */
    public static function add($table,$data){
        $id = Db::name($table)->insertGetId($data);
        return $id;
    }

    /**
     *修改项目
     * @param
     * @return
     */
    public static function edit($table,$id,$data){
       try{
           return Db::name($table)->where(['id'=>$id])->update($data);
       }catch(Exception $e){
           return $e->getMessage();
       }
    }

    /**
     *删除项目
     * @param
     * @return
     */
    public static function del($table,$id,$where = 'id'){
        try{
            //事务软删除
            Db::startTrans();
            $del_list = explode(',',$id);
            try{
                foreach ($del_list as $v){
                    Db::name($table)->where($where,$v)->update(['status'=>config('status')]);
                }
                Db::commit();
                return true;
            }catch (Exception $e){
                Db::rollback();
                return $e->getMessage();
            }
            //直接删除
            //return Db::name($table)->where('id','in',$id)->delete();
            //软删除
            //return Db::name($table)->where(['id','in',$id])->update(['status'=>config('status')]);
        }catch(Exception $e){
            return $e->getMessage();
        }
    }
}